package com.framework.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.framework.entity.sys.SysAgent;
import com.framework.view.PartnerView;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 功能描述: 代理商基础信息
 *
 * @author ck
 * @date 2018/9/6 13:54
 */
public interface AgentDao extends BaseMapper<SysAgent> {
	/**
	 * 新增数量
	 * @param agentId 合伙人id
	 * @param type 类型
	 * @param isOwn
	 * @return
	 */
	int queryAgentAddCount(@Param("agentId") Long agentId, @Param("type") int type,@Param("isOwn")Integer isOwn);

	/**
	 * 根据id修改
	 * @param sysAgent
	 */
	void updateAgentById(@Param("ex") SysAgent sysAgent);

	/**
	 * 合伙人列表
	 * @param agentId
	 * @param partnerCount
	 * @param thisMonthAmount
	 * @param merchantCount
	 * @param realName
	 * @param name
	 * @return
	 */
	List<PartnerView> queryPartnerList(@Param("agentId") Long agentId, @Param("partnerCount") String partnerCount, @Param("thisMonthAmount") String thisMonthAmount, @Param("merchantCount") String merchantCount, @Param("realName") String realName, @Param("name") String name);

	/**
	 * 查询下级合伙人列表
	 * @param agentId
	 * @param partnerCount
	 * @param thisMonthAmount
	 * @param merchantCount
	 * @param realName
	 * @param name
	 * @param thisMonthActiv
     * @return
	 */
	List<PartnerView> querySubAgentList(@Param("agentId") Long agentId, @Param("partnerCount") String partnerCount, @Param("thisMonthAmount") String thisMonthAmount, @Param("merchantCount") String merchantCount, @Param("realName") String realName, @Param("name") String name,@Param("thisMonthActiv") String thisMonthActiv);

	/**
	 * 合伙人信息
	 * @param agentId
	 * @return
	 */
	Map<String,Object> queryPartnerCount(@Param("agentId") Long agentId);

	/**
	 * 查询自己的下级代理商信息
	 * @param pid
	 * @return
	 */
	List<SysAgent> queryAgentByPid(@Param("pid") Long pid);

	/**
	 * 越级查询
	 * @param agentId
	 * @param phone
	 * @return
	 */
	List<SysAgent> queryOverByPhone(@Param("agentId")Long agentId, @Param("phone")String phone);

	/**
	 * 根据agentId查询等级
	 * @param agentId
	 * @return
	 */
	Integer queryLv(@Param("agentId")Long agentId);

	/**
	 * 合伙人详情
	 * @param agentId
	 * @param types
	 * @param time
	 * @return
	 */
	Map<String,Object> queryPartnerInfoMap(@Param("agentId")Long agentId,@Param("types")String types,@Param("time")String time);

	/**
	 * 正常的合伙人列表
	 * @param deptId
	 * @return
	 */
	List<SysAgent> queryNormalAgentList(@Param("deptId")Long deptId);

	/**
	 * 查询列表
	 * @param params
	 * @return
	 */
	List<Map<String, Object>> queryAgentList(Map<String,Object> params);

	/**
	 * 冻结合伙人账号
	 * @param agent
	 */
	void freezAgent(SysAgent agent);

	/**
	 * 查询单个合伙人详情
	 * @param agentId
	 * @return
	 */
	Map<String,Object> findAgentDetail(@Param("agentId")Long agentId);

	/**
	 * 检测手机号是否存在
	 * @param phone
	 * @param deptId
	 * @return
	 */
	String checkParent(@Param("phone") String phone, @Param("deptId") Long deptId);

	/**
	 * 查询所有被封禁的合伙人
	 * @param params
	 * @return
	 */
	List<Map<String, Object>> queryForbidAgentList(Map<String,Object> params);

	/**
	 * 根据姓名以及手机号码查询id
	 * @param phone
	 * @param parentName
	 * @param deptId
	 * @return
	 */
	Long queryAgentIdByphoneAndName(@Param("phone") String phone, @Param("name") String parentName, @Param("deptId") Long deptId);



	/**
	 * 根据id查询合伙人信息
	 * @param agenId
	 * @return
	 */
	SysAgent queryIdsById(@Param("agentId") Long agenId);

	/**
	 * 合伙人数量
	 * @param params
	 * @return
	 */
	Integer queryCount(Map<String,Object> params);

	/**
	 * 被禁合伙人数量
	 * @param params
	 * @return
	 */
	Integer queryForbidAgentCount(Map<String,Object> params);
	/**
	 * 根据姓名和渠道id查询合伙人
	 * @param name
	 * @param deptId
	 * @return
	 */
    List<SysAgent> queryByName(@Param("name") String name,@Param("deptId") Long deptId);


	/**
	 * 查询合伙人
	 * @param deptId
	 * @return
	 */
    SysAgent queryBasicAgentByDeptId(@Param("deptId") Long deptId);

	/**
	 * 查询有效的直属合伙人
	 * @param agentId
	 * @param type
	 * @return
	 */
    List<SysAgent> queryRealSubAgent(@Param("agentId") Long agentId, @Param("type") Integer type);

	/**
	 * 根据下级合伙人和平台id查出顶级盟主
	 * @param subId 下级合伙人
	 * @param baseAgentId 平台推荐吗
	 * @return
	 */
	SysAgent queryTopAgentBySubIdAndBase(@Param("subId") Long subId, @Param("baseAgentId") Long baseAgentId);


}
